package contegor.scire.structure;

import contegor.scire.core.Id;

/**
 * Set of constants. Mainly most used {@link Id}s.
 *
 * @version $Revision$
 * @author  Héctor Cirbián Pousa ($Author$)
 */
public class Constants {

  // Main Containers.
  public static final String BASE    = "base";
  public static final String CORE    = "core";
  public static final String ACTIONS = "actions";
  public static final String SYSTEM  = "system";
  public static final String USER    = "user";
  public static final String LANG    = "lang";

  public static final Id BASE_CORE    = new Id(BASE, CORE);
  public static final Id BASE_SYSTEM  = new Id(BASE, SYSTEM);

  public static final Id ENTITY    = new Id(BASE, CORE, "entity");
  public static final Id RELATION  = new Id(BASE, CORE, "relation");
  public static final Id ATTRIBUTE = new Id(BASE, CORE, "attribute");

  public static final Id ABSTRACT  = new Id(BASE, CORE, "abstract");
  public static final Id CONCRETE  = new Id(BASE, CORE, "concrete");
  public static final Id RECURSIVE = new Id(BASE, CORE, "recursive");
  public static final Id MAIN      = new Id(BASE, CORE, "main");

  public static final Id ACTION    = new Id(BASE, CORE, "action");

  public static final Id TO_BE_SER      = new Id(BASE, CORE, "to be-ser");
  public static final Id TO_MEAN        = new Id(BASE, CORE, "to mean-significar");
  public static final Id TO_MAKE        = new Id(BASE, CORE, "to make-hacer");
  public static final Id TO_BELONG      = new Id(BASE, CORE, "to belong-pertenecer");
  public static final Id TO_HAVE        = new Id(BASE, CORE, "to have-tener");
  public static final Id TO_REQUIRE     = new Id(BASE, CORE, "to require-requerir");
  public static final Id TO_SOLVE       = new Id(BASE, CORE, "to solve-resolver");
  public static final Id TO_CAN         = new Id(BASE, CORE, "to can-poder");
  public static final Id TO_DATE        = new Id(BASE, CORE, "to date-fechar");
  public static final Id TO_BE_COMPOUND = new Id(BASE, CORE, "to be compound-estar compuesto");
  public static final Id TO_SHOW        = new Id(BASE, CORE, "to show-mostrar");

  public static final Id LANG_CONCEPTS = new Id(LANG, "concepts");
  public static final Id LANG_ACTIONS  = new Id(LANG, "actions");
  public static final Id LANG_WORDS    = new Id(LANG, "words");
  public static final Id LANG_SM       = new Id(LANG, "state-machines");
  public static final Id LEARNED_WORDS = new Id(USER, "words");
  public static final Id COUNTRIES     = new Id(BASE, "places", "countries");

  public static final Id LANG_MEANING_GROUP = new Id(LANG_CONCEPTS, "meaning group");
  public static final Id LANG_PERSON = new Id(LANG_CONCEPTS, "person");
  public static final Id LANG_NUMBER = new Id(LANG_CONCEPTS, "number");
  public static final Id LANG_ENTITY = new Id(LANG_CONCEPTS, "entity");
  public static final Id LANG_NEXUS  = new Id(LANG_CONCEPTS, "nexus");
  public static final Id LANG_DIRECT_INDIRECT_OBJECT = new Id(LANG_CONCEPTS, "direct/indirect object");
  public static final Id LANG_SUBJECT            = new Id(LANG_CONCEPTS, "subject");
  public static final Id LANG_ACTION             = new Id(LANG_CONCEPTS, "action");
  public static final Id LANG_DIRECT_OBJECT      = new Id(LANG_CONCEPTS, "direct object");
  public static final Id LANG_DESTINY_OBJECT     = new Id(LANG_CONCEPTS, "destiny object");
  public static final Id LANG_BELONGING_OBJECT   = new Id(LANG_CONCEPTS, "belonging object");
  public static final Id LANG_COMPOSITION_OBJECT = new Id(LANG_CONCEPTS, "composition object");
  public static final Id LANG_TIME_OBJECT        = new Id(LANG_CONCEPTS, "time object");

  public static final Id FIRST  = new Id(BASE, CORE, "first");
  public static final Id LAST   = new Id(BASE, CORE, "last");
  public static final Id BEFORE = new Id(BASE, CORE, "before");
  public static final Id AFTER  = new Id(BASE, CORE, "after");
  public static final Id NEXT   = new Id(BASE, CORE, "next");
  public static final Id PREV   = new Id(BASE, CORE, "previous");
  public static final Id ORDER  = new Id(BASE, CORE, "order");

  public static final Id PARAMETER = new Id(BASE, CORE, "parameter");

  public static final Id NUMBER    = new Id(BASE, CORE, "number");
  public static final Id INTEGER   = new Id(BASE, CORE, "integer");
  public static final Id DECIMAL   = new Id(BASE, CORE, "decimal");
  public static final Id STRING    = new Id(BASE, CORE, "string");
  public static final Id URI       = new Id(BASE, CORE, "uri");
  public static final Id TIMESTAMP = new Id(BASE, CORE, "timestamp");

  public static final Id UNKNOWN_ENTITY = new Id(BASE, CORE, "unknown entity");
  public static final Id UNKNOWN        = new Id(BASE, CORE, "unknown");
  public static final Id UNDEFINED      = new Id(BASE, CORE, "undefined");

  public static final Id LAST_RESULT = new Id(USER, "last result");
}